const localData = localStorage.getItem('pz_v3pz')
const state = localData ? localData.menu : {
  isCollapse: false,  //菜单是否收起
  selectMenu: [],//选择的菜单
  routerList: [], //动态路由
  menuActive: '1-1' //默认的高亮
}
const mutations = {
  collapseMenu(state) {
    state.isCollapse = !state.isCollapse
  },
  // 收集tag数据
  addMenu(state, payload) {
    // 数组去重   一个标签可能会多次点击   findIndex :返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回 -1。
    if (state.selectMenu.findIndex(item => item.path === payload.path) === -1) {
      state.selectMenu.push(payload)
    }
  },
  // 关闭tab
  closeMenu(state, payload) {
    // 找到点击数据的索引
    const index = state.selectMenu.findIndex(item => item.name === payload.name)
    // 通过索引来删除数组指定元素
    state.selectMenu.splice(index, 1)
  },

  // 切换侧边导航栏，更换高亮
  updateMenuActive(state, payload) {
    state.menuActive = payload
  },

  // 拼接路由
  dynamicMenu(state, payload) {
    // 通过vite中glob导入文件
    const modules = import.meta.glob('../views/**/**/*.vue')
    // console.log(modules);

    // 与之前的路由相拼接
    function routerSet(router) {
      router.forEach(route => {
        // 判断有没有子菜单  拼接路由
        if (!route.children) {
          const url = `../views${route.meta.path}/index.vue`
          //  拿到获得的vue组件
          route.component = modules[url]
        } else {
          routerSet(route.children)   //递归
        }
      })
    }
    routerSet(payload)
    // 拿到完整的路由链接
    state.routerList = payload
  }


}
export default {
  state,
  mutations
}